/**
  ******************************************************************************
  * @文件名称 : task_HMI.c
  * @摘要 : 
  * @创建日期 : Jul 23, 2024
  * @创建者：citunhk
  ******************************************************************************
  * @使用说明
  *
  *  
  ******************************************************************************
  */

/* 声明包含头文件 -----------------------------------------------------------*/
#include "../Inc/task_HMI.h"
#include "../Inc/task_dataRW.h"
#include "../Res/Inc/disp_init.h"
#include "../Res/Inc/disp_main.h"
#include "../Res/Inc/disp_menu.h"
#include "../Res/Inc/disp_curve.h"
#include "../Res/Inc/disp_titlebar.h"
#include "../Res/Inc/disp_info.h"
#include "../Res/Inc/data_public.h"
#include "../Res/Inc/disp_comm.h"
#include "../Res/Inc/disp_pro.h"
#include "../Res/Inc/disp_about.h"
#include "../Res/Inc/disp_show.h"
#include "../Res/Inc/disp_func.h"
#include "../Res/Inc/disp_alarm.h"
#include "../Res/Inc/disp_factory.h"
#include "../Res/Inc/disp_standby.h"
/* 声明私有类型定义---------------------------------------------------------*/

/* 声明私有变量 -------------------------------------------------------------*/
static uint8_t firstPower;
/* 声明私有常量 -------------------------------------------------------------*/

/* 声明私有宏定义 -----------------------------------------------------------*/

/* 声明私有函数 -------------------------------------------------------------*/

/**
  * @brief  显示界面初始化函数
  * @param  无
  * @retval 无
  */
void UI_init(void)
{
	if(disp.New == DIF_NULL)
	{
		lv_init();  //初始化LVGL
		lv_port_disp_init();  //初始化显示
		lv_port_indev_init();  //初始化触摸

		init_displsy_style();   //界面样式初始化
		UI_initStyle_info();  //初始化信息界面的公用风格

		disp.New = DIF_INIT;  //切换界面为初始化界面
		init_btn_style1();  //初始化按钮样式
		init_label_style1();  //初始化标签样式
		init_list_style1();  //列表样式初始化
		init_cont_style1();  //容器样式初始化

		lv_timer_create(UI_refresh_infoList, 1000, NULL);	/* 创建定时器用于刷新处理信息列表,TODO:此定时器在系统运行时开启 */
	}
}

/**
  * @brief  显示界面切换函数
  * @param  无
  * @retval 无
  */
void UI_display_switch(void)
{
	/* 界面切换 */
	if(disp.New != disp.Old)  //界面需要切换
	{
		/* 删除显示界面 */
		switch(disp.Old)
		{
		case DIF_NULL:
			break;
		case DIF_INIT:
			UI_delete_init();  //删除初始化界面
			break;
		case DIF_MAIN:

			UI_delete_main();  //删除主界面
			break;
		case DIF_MENU:
			UI_delete_menu();  //删除菜单界面
			break;
		case DIF_CURVE:
			UI_delete_curve();  //删除曲线界面
			break;
		case DIF_MESS:
//			UI_delete_mess();  //删除消息界面
			UI_delete_info();  //删除消息界面
			break;
		case DIF_FUNC:
			UI_delete_func();  //删除创建功能设置界面
			break;
		case DIF_DISP:
			UI_delete_show();     //删除显示设置界面
			break;
		case DIF_ALARM:
			UI_delete_alarm();    //删除报警设置界面
			break;
		case DIF_COMM:
			UI_delete_communication();
			break;
		case DIF_PRO:
			UI_delete_pro();  //删除高级设置界面
			break;
		case DIF_ABOUT:
			UI_delete_about();    //删除关于本机界面
			break;
		case DIF_FAC:
			UI_delete_factory();  //删除工厂参数界面
			break;
		case DIF_STAN:
			UI_delete_standby();  //删除待机界面
			break;
		}

		/* 创建显示界面 */
		switch(disp.New)
		{
		case DIF_NULL:
			break;
		case DIF_INIT:
			UI_create_init();  //初始化界面创建
			break;
		case DIF_MAIN:
			UI_create_main();  //创建主界面
			UI_display_main();  //刷新主界面
			break;
		case DIF_MENU:
			UI_create_menu();  //创建菜单界面
			break;
		case DIF_CURVE:
			UI_create_curve();  //创建温度曲线界面
			break;
		case DIF_MESS:
			UI_create_info();  //创建消息界面
			break;
		case DIF_FUNC:
			UI_create_func();    //创建功能设置界面
			break;
		case DIF_DISP:
			UI_create_show();  //创建显示设置界面
			break;
		case DIF_ALARM:
			UI_create_alarm();  //创建报警设置界面
			break;
		case DIF_COMM:
			UI_create_communication();      //创建通讯界面
			break;
		case DIF_PRO:
			UI_create_pro();  //创建高级设置界面
			break;
		case DIF_ABOUT:
			UI_create_about();  //创建关于本机界面
			break;
		case DIF_FAC:
			UI_create_factory();  //创建工厂参数界面
			break;
		case DIF_STAN:
			UI_create_standby();  //创建待机界面
			break;
		}

		/* 标题栏 */
		if(disp.Old == DIF_MAIN || disp.Old == DIF_STAN)  //上一个界面没有菜单栏
		{
			if (disp.New != DIF_STAN && disp.New !=DIF_MAIN)
			{
				UI_create_titlebar();  //创建标题栏
			}
		}
		else
		{
			if(disp.New == DIF_MAIN)
			{
				if(disp.Old != DIF_INIT && disp.Old != DIF_STAN)
				{
					UI_delete_titlebar();  //删除标题栏
				}
			}
			else if(disp.New == DIF_STAN)
			{
				UI_delete_titlebar();  //删除标题栏
			}
			else if(disp.New != DIF_INIT)
			{
				UI_delete_titlebar();  //删除标题栏
				UI_create_titlebar();  //创建标题栏
				UI_switch_titlebar_title();  //刷新标题栏
			}

		}

		/* 显示界面 */
		switch(disp.New)
		{
		case DIF_NULL:
			break;
		case DIF_INIT:
			disp.Old = DIF_INIT;
			break;
		case DIF_MAIN:
			disp.Old = DIF_MAIN;
			break;
		case DIF_MENU:
			disp.Old = DIF_MENU;
			disp.Ret = DIF_MAIN;
			break;
		case DIF_CURVE:
			disp.Old = DIF_CURVE;
			disp.Ret = DIF_MAIN;
			break;
		case DIF_MESS:
			disp.Old = DIF_MESS;
			disp.Ret = DIF_MAIN;
			break;
		case DIF_FUNC:
			disp.Old = DIF_FUNC;
			disp.Ret = DIF_MENU;
			break;
		case DIF_DISP:
			disp.Old = DIF_DISP;
			disp.Ret = DIF_MENU;
			break;
		case DIF_ALARM:
			disp.Old = DIF_ALARM;
			disp.Ret = DIF_MENU;
			break;
		case DIF_COMM:
			disp.Old = DIF_COMM;
			disp.Ret = DIF_MENU;
			break;
		case DIF_PRO:
			disp.Old = DIF_PRO;
			disp.Ret = DIF_MENU;
			break;
		case DIF_ABOUT:
			disp.Old = DIF_ABOUT;
			disp.Ret = DIF_MENU;
			break;
		case DIF_FAC:
			disp.Old = DIF_FAC;
			disp.Ret = DIF_ABOUT;
			break;
		case DIF_STAN:
			disp.Ret = disp.Old;
			disp.Old = DIF_STAN;
			break;
		}
	}
}

/**
  * @brief  控制显示屏显示界面
  * @param  无
  * @retval 无
  */
int bll_HMI(struct task_pcb *task)
{
	/* 第一次上电 */
	if (firstPower == 0)
	{
		firstPower = 1;
		/* LCD初始化 */
		lcd_BackLight_on();
		/* 初始化图片素材 */
		init_img();
	}
	/* 显示界面相关初始化 */
	UI_init();
	/* 显示界面与标题栏切换 */
	UI_display_switch();

	lv_timer_handler();

	/* 刷新程序控温数据*/
	programCtrlTemp_refresh();
	return 1;
}
